package code;

public class User {
	
	private String name, login, adress;

	/**
	 * Constroi um objeto do tipo User.
	 * 
	 * @param name
	 *            Nome do usuario
	 * @param login
	 *            Login do usuario
	 * @param adress
	 *            Endereco do usuario
	 * @throws Exception
	 *             Lanca excecao no caso de nome, login ou endereco invalido
	 */
	public User(String name, String login, String adress) throws Exception {

		if (name == null || name.isEmpty()) {
			throw new Exception("Nome invalido!");
		} else {
			this.name = name;
		}

		if (login == null || login.isEmpty()) {
			throw new Exception("Login invalido!");
		} else {
			this.login = login;
		}

		if (adress == null || adress.isEmpty()) {
			throw new Exception("Endereco invalido!");
		} else {
			this.adress = adress;
		}

	}

	/**
	 * Metodo que retorna o nome do usuario corrente
	 * 
	 * @return
	 */
	public String getName() {
		return name;
	}

	/**
	 * 
	 * @param newName
	 *            Novo nome para o usuario corrente
	 */
	public void setName(String newName) throws Exception{
		if(newName.isEmpty() || newName == null) {
			throw new Exception("Novo nome invalido!");
		} else {
			name = newName;
		}
		
	}

	/**
	 * Metodo que retorna o login do usuario corrente
	 * 
	 * @return
	 */
	public String getLogin() {
		return login;
	}

	/**
	 * 
	 * @param newLogin
	 *            New login for user
	 */
	public void setLogin(String newLogin) throws Exception {
		if(newLogin.isEmpty() || newLogin == null) {
			throw new Exception("Novo login invalido");
		} else {
			login = newLogin;
		}
		
	}
	
	public String getAdress(){
		return adress;
	}
	
	public void setAdress(String newAdress) throws Exception{
		if(newAdress.isEmpty() || newAdress == null) {
			throw new Exception("Novo endereco invalido");
		} else {
			adress = newAdress;
		}
	}
	

}
